python标准库:random生成随机数
暑期Stata培训班招生啦!!!接力线上的网课培训,我们在今夏又开始新一轮的线下培训啦!8月4日至12日,爬虫俱乐部期待与您的相遇!培训具体内容详见推文《暑期Stata编程技术定制培训班》。
有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~
喜大普奔~爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~
好消息:爬虫俱乐部即将推出研究助理供需平台,如果您需要招聘研究助理(Research Assistant or Research Associate),可以将您的需求通过我们的公众号发布;如果您想成为一个RA,可以将您的简历发给我们,进入我们的研究助理数据库。帮我们写优质的推文可以提升您被知名教授雇用的胜算呀!
古有云:磨刀不误砍柴工。只学会了基本的python语法是不足以写出具有实际生产力的代码的,除此之外,python存在着大量的标准库与第三方库,它们没有内置函数那样必不可少,但足可以成为解决某个具体问题的利器,因此爬虫俱乐部会挑选出一些非常实用且强大的标准库或第三方库加以介绍,让大家在简短的篇幅内了解python强大的扩展功能。同时需要注意的是,由于篇幅所限,我们不能对标准库中的每个函数或方法加以介绍,只能选取最重要最实用的部分,如果你有兴趣深入了解,可以通过python官网搜索库名来获取更多信息。
https://docs.python.org/3.6/library/random.html
本期我们介绍python一个基本的标准库:random,顾名思义,random库提供了各式各样的生成随机数的方法,不仅是生成整数随机数,浮点型随机数等功能,也可以生成符合正态分布、指数分布等要求的随机数。接下来我们一起看一看详细的案例吧
因为random库属于标准库,故直接在py文件中使用 import random即可。
生成整数随机数
给定范围1-100的正整数,如何生成在其范围内的随机整数呢?使用random中的randint函数
import random
randnum = random.randint(1,100)
该函数用于生成[1,100]范围内的一个随机整数,那么如果只想从1-100间的奇数中随机选取呢?使用random中的randrange函数
randnum = random.randrange(1,100,2)
那么,如果现在是从一个给定的列表中随机选取其中一个数呢?使用random中的choice函数
randnum = random.choice([1,8,3,0,6])
该函数指定一个列表作为参数,随机返回该列表中任意一个元素。
生成浮点随机数
在工作中我们同样会遇到需要生成0-1范围内的随机小数这样的需求,这时可以使用random中的random函数,这个函数会随机生成介于0-1之间的一个浮点数,精度为16位,从这个函数与random库同名也可以看出,它的地位非常重要,事实上,生成0-1之间的浮点数确实是非常常见的需求。
randnum = random.random()
那么如果我们需要介于某两个数之间的浮点数呢?除了我们可以人为对random函数进行处理得到结果,random库也提供了相应方法:uniform函数
randnum = random.uniform()
列表乱序与抽样
random库不仅可以生成随机数,也可以对一个既有的列表执行乱序操作,换句话说,凡是跟随机搭上点关系的需求,random都可以实现。这个函数也就是shuffle,它可以对所有可变序列执行乱序操作。
a = [1,2,3,4,5,6,7,8,9]
random.shuffle(a)
可以看到,shuffle执行完毕后,a列表本身被打乱了,如果我们希望只是得到一个乱序版本的列表,而不是打乱原版本,那么可以使用sample函数,sample函数对指定的集合进行不重复抽取,并可以指定样本量,如果样本量为集合容量本身,则实现了乱序抽取。该函数常用于不重复的随机抽样。返回的是一个新的序列,不会破坏原有序列。要从一个整数区间随机抽取一定数量的整数,请使用sample(range(10000000), k=60)类似的方法,这非常有效和节省空间。如果k大于集合的长度,则弹出ValueError异常。
a = [1,2,3,4,5,6,7,8,9]
b = random.sample(a,len(a))
print(a)
print(b)
案例
生成一个由数字与英文大写字母组成的四位随机验证码
在这个案例中,我们首先进行一个for循环,使i由0到3,存在1/4的概率随机数与i不相等,此时该位字符为数字字符,否则为字母字符。chr函数将一个整数转换为其所对应的ASCII码的字符。英文大写字母的ASCII码范围为第65-90个
checkcode = '' for i in range(4):
current = random.randrange(0,4)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
print(checkcode)
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
文字编辑:何雪泽
技术总编:刘贝贝
往期推文推荐:
2.hello,MySQL--Stata连接MySQL数据库
3.hello,MySQL--odbcload读取MySQL数据
关于我们
微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。